Add initial test for get/set RTCRtpParameters
diff --git a/webrtc/RTCRtpParameters-degrationPreference.html b/webrtc/RTCRtpParameters-degrationPreference.html new file mode 100644 index 0000000..4419311 --- /dev/null +++ b/webrtc/RTCRtpParameters-degrationPreference.html
@@ -0,0 +1,87 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCRtpParameters degrationPreference</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="dictionary-helper.js"></script> +<script src="RTCRtpParameters-helper.js"></script> +<script> + 'use strict'; + + // Test is based on the following editor draft: + // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html + + // The following helper functions are called from RTCRtpParameters-helper.js: + // validateSenderRtpParameters + + /* + 5.2. RTCRtpSender Interface + interface RTCRtpSender { + Promise<void> setParameters(optional RTCRtpParameters parameters); + RTCRtpParameters getParameters(); + }; + + dictionary RTCRtpParameters { + DOMString transactionId; + sequence<RTCRtpEncodingParameters> encodings; + sequence<RTCRtpHeaderExtensionParameters> headerExtensions; + RTCRtcpParameters rtcp; + sequence<RTCRtpCodecParameters> codecs; + RTCDegradationPreference degradationPreference; + }; + + enum RTCDegradationPreference { + "maintain-framerate", + "maintain-resolution", + "balanced" + }; + + - degradationPreference is set to the last value passed into setParameters, + or the default value of "balanced" if setParameters hasn't been called. + */ + + promise_test(t => { + const pc = new RTCPeerConnection(); + const { sender } = pc.addTransceiver('audio'); + + const param = sender.getParameters(); + validateSenderRtpParameters(param); + + assert_equals(param.degrationPreference, 'balanced', + 'Expect initial param.degrationPreference to be balanced'); + + param.degrationPreference = 'maintain-framerate'; + + return pc.setParameters(param) + .then(() => { + const param = sender.getParameters(); + validateSenderRtpParameters(param); + + assert_equals(param.degrationPreference, 'maintain-framerate'); + }); + + }, 'setParameters with degrationPreference set should succeed'); + + promise_test(t => { + const pc = new RTCPeerConnection(); + const { sender } = pc.addTransceiver('audio'); + + const param = sender.getParameters(); + validateSenderRtpParameters(param); + + assert_equals(param.degrationPreference, 'balanced', + 'Expect initial param.degrationPreference to be balanced'); + + param.degrationPreference = undefined; + + return pc.setParameters(param) + .then(() => { + const param = sender.getParameters(); + validateSenderRtpParameters(param); + + assert_equals(param.degrationPreference, undefined); + }); + + }, 'setParameters with degrationPreference unset should succeed'); + +</script>